
#include "../GUI.h"
#include "Core/Memory/HeapObject.h"
#include "Core/GUI/Application/IWindow.h"

#ifndef _GUI_WINDOW_WIN32_
#define _GUI_WINDOW_WIN32_


namespace GUI
{
	namespace Win32
	{
		class WindowImpl;

		class Window : public Core::GUI::IWindow, public Core::Memory::HeapObject
		{
		public:
			Window();
			virtual ~Window();
			GUI_WIN32 virtual bool Create(const std::string & _strTitle, uint32 _iWidth, uint32 _iHeight);
			GUI_WIN32 virtual const std::string & GetTitle();
			GUI_WIN32 virtual void Loop();
			GUI_WIN32 virtual void OnResize(VoidFunctionIntInt _onResizeFunc);
			GUI_WIN32 virtual Core::GUI::WidgetType GetType() const;
			GUI_WIN32 virtual int GetId() const;
			GUI_WIN32 virtual int GetWidth() const;
			GUI_WIN32 virtual int GetHeight() const;
			GUI_WIN32 virtual int GetX() const;
			GUI_WIN32 virtual int GetY() const;
			GUI_WIN32 virtual void SetSize(int _iWidth, int _iHeight);
			GUI_WIN32 virtual void SetPosition(int _x, int _y);

		private:
			WindowImpl * m_pImpl;
		};
	}
}

#endif // _GUI_WINDOW_WIN32_